#ifndef __IMAGEFEATURE_H__
#define __IMAGEFEATURE_H__

#include "sift/imgfeatures.h"
#include <vector>
#include <boost/smart_ptr.hpp>

namespace cshotel {
    class InputImage;
    class ImageFeature {
    public:
        ImageFeature(const sift::feature& newF, boost::weak_ptr<InputImage> img);
        sift::feature& getSIFTFeature();
        void addSIFTFeatureMatch(boost::weak_ptr<ImageFeature> newMatch);
        boost::weak_ptr<InputImage> getImage();
        const std::vector<boost::weak_ptr<ImageFeature> >& getFeatureMatches();
    
    private:
        sift::feature f;
        boost::weak_ptr<InputImage> image;
        std::vector<boost::weak_ptr<ImageFeature> > featureMatches;
    };
}

#endif
